笔试题 - iOS

1、(iOS开发选做)实现多线程都有哪几种方法?

A、使用@synchronized(self)

B、使用GCD

C、使用NSOperationQueue

D、使用@thread

正确答案:B C

2、表视图的相关类有哪些?

UITableView

UITableViewController

UITableViewDelegate

UITableViewDataSource

正确答案: A B

错误答案解析:C.UITableViewDelegate是代理协议D.UITableViewDataSource是数据源协议

3、iOS中导航设计模式有几种?

平铺导航、 标签导航、 树形导航、 模态视图导航

正确答案: A B C, 平铺导航( UITabbarController ) 标签导航( UINavigationController ) 树形导航(UIPageViewController)

4、为什么说Object-C是runtime language?

将数据类型的确定由编译时,推迟到了运行时
运行时机制使我们直到运行时才去决定一个对象的类别,以及调用该类别对象指定方法。
假使A继承了B类,那么在编译时就已经生成了A的实例
多态是指不同对象以自己的方式响应相同的消息的能力

ABD

简答题

一、用Object-C定义并实现一个基于数组的循环队列类,当队列放满需支持动态的扩展队列长度。

定义一个结构体,以及int变量front,rear用于跟踪数据填充情况。

1.当队列rear+1对数组长度取余等于front时,说明数组已填充满,那么需要扩展,即重新new 数组,长度为原来2倍,然后将原来数据copy新数组中,同时回收旧的数组

2.当rear==front时为空

注:使用rear+1前提是front指定的空间不存放值,这样就可知front==rear时时队列为空,而避免混淆队列是空还是满。